1.包装器函数
    new Number():object
        Number.prototype.xxx
        Number():number 
    new Boolean():object
        Boolean.prototype.xxx
        Boolean():boolean 
    new String():object
        String.prototype.xxx
        String():string 
    1.手动包装
    2.主动装箱
        var str="hello";
        str.length 
            //自动装箱
            //调用属性和方法
            //自动拆箱

            String.prototype.xxx
                1.length 
                2.charAt(index)
                3.charCodeAt(index)
                4.concat()
                5.slice()
                6.substr()
                7.substring()
                8.trim()
                9.toUpperCase()
                10.toLowerCase()
                11.indexOf()
                12.lastIndexOf()
                13.search(""/正则)
                14.march(""/正则)
                15.replace(""/正则，替换的字符)
                16.split(""/正则)
2.正则表达式
    1.创建
        /表达式/修饰符
        new RegExp（表达式，修饰符）
    2.修饰符 igm
        ignore
        global
        multiline
    3.表达式

    4.属性和方法
        RegExp.prototype.xxxx 
        source 
        lastIndex 

        test()
        exec()-->match()
3.Math对象



4.Date
    日期对象
    构造函数对象
    0-11
    var date = new Date();
        无参数：返回当前时间 返回值是object
        有参数  1：设置时间
                 new Date(2020,9,01);
                 new Date("2020/10/01");使用字符串设置月份时 不需要特别修改
                 new Date("2020-10-01");默认八点
                 new Date(毫秒数)毫秒数
                 ... 

        1.getDate()返回当前日期的几号 number类型
        2.getDay() 返回当前星期几 0-6 number类型
        3.getFullYear() 返回当前年份 number类型
        4.getHouse() 返回当前小时 number类型
        5.getMinutes() 返回分钟
        6.getMonth() 返回月份 实际-1
        7.getSecond()返回秒数

        设置 返回值为毫秒数
        1.setDate()
        2.setDay() 
        3.setFullYear() 
        4.setHouse() 
        5.setMinutes() 
        6.setMonth()  返回值为毫秒数
        7.setSecond()


5.面对对象
    万物皆对象

    1，工厂模式
        function setStudent(name,age,gender){
            var obj = new Object();
            obj.name=name
            obj.age=age
            obj.gender=genders
            return obj
        }

        var stu1 = satStudent("lisi",20,"men")
        var stu2 = satStudent("lisi",20,"men")
        var stu3 = satStudent("lisi",20,"men")

        优点：简化代码的操作（封装）
        缺点：
            1.对象不能细分
            2.公有属性和方法放在实例对象中浪费内存

    2.构造函数模式

        function Student(name,age,gender){
            //new Object
            this.name=name;   
            this.age=age;
            this.gender=gender;
            //return obj 
        }

       var stu1 = new Student("lisi",20,"female")

       优点：
            解决了对象细分问题
        缺点：
            内存问题没有彻底解决

    3.原型对象模式
        function Student(name,age,gender){
            this.name=name;
            this.age=age;
            this.gender=gender;
        }

        Student.prototype.say=function(){}

        var stu1 = new Student();
        var stu2 = new Student();
        stu1.say()
        stu2.say()


4.继承
    子类的原型指向父类的实例
    Poor.prototype = new Rich();
    Poor.prototype.constructor=Poor;

借用构造函数
Rich.call(this,name,age,gender)
### 注意this的指向